package com.zhongwang.business.module.estimateBudgetAccountingManage.controller;

import com.zhongwang.business.base.BaseController;
import com.zhongwang.business.common.JsonResult;
import com.zhongwang.business.gen.entity.*;
import com.zhongwang.business.module.estimateBudgetAccountingManage.model.*;
import com.zhongwang.business.module.estimateBudgetAccountingManage.model.excelImport.*;
import com.zhongwang.business.module.estimateBudgetAccountingManage.service.AccountingInfoService;
import com.zhongwang.business.module.estimateBudgetAccountingManage.service.GetDataService;
import com.zhongwang.business.util.BeanUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.FileInputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;

/**
 * AccountingInfoController 核算清单明细页控制层
 *
 * @author 徐一贺
 * @version 1.0
 * @date 2020/10/8 9:11
 */
@Controller
@RequestMapping("/accountingInfo")
public class AccountingInfoController extends BaseController {
    private static final String excel2003L = ".xls";
    private static final String excel2007U = ".xlsx";
    @Autowired
    private AccountingInfoService accountingInfoService;
    @Autowired
    private GetDataService getDataService;

    /**
     * jumpPage 页面跳转调度前置
     *
     * @param id 主键
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/11/9 15:53
     */
    @ResponseBody
    @PostMapping("/jumpPage")
    @RequiresPermissions("ver:detail:view")
    public JsonResult jumpPage(String id) {
        BusBudgetAccountingCost cost =
                accountingInfoService.getBusBudgetAccountingCostByPrimaryKey(Integer.valueOf(id));
        // 如果是机加则验证机加基础信息是否维护，如果未维护则不可查看明细
        if (cost.getCode().contains("Part-manufacturingCost-machining")) {
            BusBudgetAccountingBasicInfoConfigModel condition =
                    new BusBudgetAccountingBasicInfoConfigModel();
            condition.setBatId(cost.getBatId());
            condition.setCode("Machining quota");
            BusBudgetAccountingBasicInfoConfigModel basicInfo =
                    accountingInfoService.getBusBudgetAccountingBasicInfoConfigByBatIdAndCode(condition);
            if (basicInfo.getValue() == null) {
                return error("请编辑计算参数中的机加定额。");
            } else {
                return JsonResult.success().setData(cost.getBatId());
            }

        } else {
            return JsonResult.success().setData(cost.getBatId());
        }
    }

    /**
     * switchPage 选择式页面跳转，根于成本项码中的特征跳转到不同的明细页
     *
     * @param batId 单据鼻癌主键
     * @param model 渲染模型
     * @return java.lang.String
     * @author 徐一贺
     * @date 2020/10/8 9:25
     */
    @GetMapping("/switchPage/{mode}/{batId}/{id}")
    @RequiresPermissions(
            value = {"ver:detail:view", "rou:detail:view"},
            logical = Logical.OR)
    public String switchPage(
            @PathVariable String mode,
            @PathVariable Integer batId,
            @PathVariable Integer id,
            Model model) {
        model.addAttribute("mode", mode);
        BusBudgetAccountingTask abBudgetAccountingTask = accountingInfoService.getAbBudgetAccountingTaskByPrimaryKey(batId);
        ProjectModel project = getDataService.getProjectModel(abBudgetAccountingTask.getProCode());
        model.addAttribute("project", project);
        BusBudgetAccountingCost busBudgetAccountingCost = accountingInfoService.getBusBudgetAccountingCostByPrimaryKey(id);
        model.addAttribute("cost", busBudgetAccountingCost);
        BusBudgetAccountingBasicInfoConfigModel taxCondition = new BusBudgetAccountingBasicInfoConfigModel();
        taxCondition.setBatId(abBudgetAccountingTask.getId());
        taxCondition.setCode("tax");
        BusBudgetAccountingBasicInfoConfig tax =
                accountingInfoService.getBusBudgetAccountingBasicInfoConfigByBatIdAndCode(taxCondition);
        model.addAttribute("tax", tax.getValue());
        // 机械、流体、自动化 原材料 不含铝材
        if (busBudgetAccountingCost.getCode().contains("-材料费-材料采购费-")
                && !busBudgetAccountingCost.getCode().contains("铝材")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            if (busBudgetAccountingCost.getCode().contains("-材料费-材料采购费-碳钢")) {
                condition.setDataType("该项目材料费碳钢总价");
                model.addAttribute("texture", "碳钢");
            } else if (busBudgetAccountingCost.getCode().contains("-材料费-材料采购费-不锈钢")) {
                condition.setDataType("该项目材料费不锈钢总价");
                model.addAttribute("texture", "不锈钢");
            } else if (busBudgetAccountingCost.getCode().contains("-材料费-材料采购费-其他")) {
                condition.setDataType("该项目材料费其他总价");
                model.addAttribute("texture", "其他");
            }
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            model.addAttribute("totalPriceHaveTax",accountingInfoService.getTotalPriceHaveTaxFromBusMaterialDataByCostId(busBudgetAccountingCost.getId()));
            return "accountManage/cost/infoPage/rawMaterialInfo/page";
        } else if (busBudgetAccountingCost.getCode().contains("-材料费-材料采购费-")
                && busBudgetAccountingCost.getCode().contains("铝材")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目材料费铝材总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            model.addAttribute("texture", "铝材");
            model.addAttribute("totalPriceHaveTax",accountingInfoService.getTotalPriceHaveTaxFromBusMaterialDataByCostId(busBudgetAccountingCost.getId()));
            return "accountManage/cost/infoPage/aluminium/page";
        }
        // 机械、流体、自动化 外购件
        else if (busBudgetAccountingCost.getCode().contains("-外购费")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目外购费总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            model.addAttribute("totalPriceHaveTax",accountingInfoService.getTotalPriceHaveTaxFromBusMaterialDataByCostId(busBudgetAccountingCost.getId()));
            return "accountManage/cost/infoPage/purInfo/page";
        }
        // 机械、流体、自动化 整体外协
        else if (busBudgetAccountingCost.getCode().contains("-外协费-整体外协")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目外协费整体外协总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            model.addAttribute("totalPriceHaveTax",accountingInfoService.getTotalPriceHaveTaxFromBusMaterialDataByCostId(busBudgetAccountingCost.getId()));
            return "accountManage/cost/infoPage/outInfo/whole/page";
        }
        // 机械、流体、自动化 带料外协
        else if (busBudgetAccountingCost.getCode().contains("-外协费-带料外协")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目外协费带料外协总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            model.addAttribute("totalPriceHaveTax",accountingInfoService.getTotalPriceHaveTaxFromBusMaterialDataByCostId(busBudgetAccountingCost.getId()));
            return "accountManage/cost/infoPage/outInfo/withMat/page";
        }
        // 机械、流体、自动化 下料工时与辅材
        else if (busBudgetAccountingCost.getCode().contains("-制造费-下料")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目制造费下料总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/cut/page";
        }
        // 机械、流体、自动化 铆焊工时与辅材
        else if (busBudgetAccountingCost.getCode().contains("-制造费-铆焊")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目制造费铆焊总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/rivetingWelding/page";
        }
        // 机械、流体、自动化 机加工时
        else if (busBudgetAccountingCost.getCode().contains("-制造费-机加")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目制造费机加总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/machining/page";
        }
        // 机械、流体、自动化 喷涂工时
        else if (busBudgetAccountingCost.getCode().contains("-制造费-喷涂")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目制造费喷涂总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/spray/page";
        }
        // 机械、流体、自动化 装配工时
        else if (busBudgetAccountingCost.getCode().contains("-制造费-装配")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目制造费装配总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/assembling/page";
        }
        // 机械、流体、自动化 热处理
        else if (busBudgetAccountingCost.getCode().contains("-制造费-热处理")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目制造费热处理总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/heatTreatment/page";
        }
        // 机械、流体、自动化 安装工时
        else if (busBudgetAccountingCost.getCode().contains("-现场安装费-人工-安装人工")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目现场安装费人工安装人工总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/install/page";
        }
        // 机械、流体、自动化 调试工时
        else if (busBudgetAccountingCost.getCode().contains("-现场安装费-人工-调试人工")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目现场安装费人工调试人工总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/debug/page";
        }
        // 机械、流体、自动化 辅材
        else if (busBudgetAccountingCost.getCode().contains("-现场安装费-辅材")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目现场安装费安装人工辅材总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/auxiliaryMaterials/page";
        }
        // 机械、流体、自动化 设计费
        else if (busBudgetAccountingCost.getCode().contains("-设计费")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目设计费总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/designFee/page";
        }
        // 包装费
        else if (busBudgetAccountingCost.getCode().contains("包装运输费-包装费")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目包装运输费包装总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            return "accountManage/cost/infoPage/packingFee/page";
        }
        // 运输费
        else if (busBudgetAccountingCost.getCode().contains("包装运输费-运输费")) {
            BusBudgetAccountingBasicInfoConfigModel freightTaxCondition =
                    new BusBudgetAccountingBasicInfoConfigModel();
            freightTaxCondition.setBatId(abBudgetAccountingTask.getId());
            freightTaxCondition.setCode("freight tax");
            BusBudgetAccountingBasicInfoConfig freightTax =
                    accountingInfoService.getBusBudgetAccountingBasicInfoConfigByBatIdAndCode(
                            freightTaxCondition);
            model.addAttribute("freightTax", freightTax.getValue());
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目包装运输费运输费");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
                model.addAttribute(
                        "totalPriceTax",
                        new BigDecimal(data.getDataValue())
                                .divide(
                                        new BigDecimal(1)
                                                .add(
                                                        new BigDecimal(freightTax.getValue())
                                                                .divide(new BigDecimal(100), 8, BigDecimal.ROUND_HALF_UP)),8,BigDecimal.ROUND_HALF_UP));
            } else {
                model.addAttribute("totalPrice", "0.00");
                model.addAttribute("totalPriceTax", "0.00");
            }
            return "accountManage/cost/infoPage/transportationExpenses/page";
        }
        // 备品备件
        else if (busBudgetAccountingCost.getCode().contains("备品备件")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目备品备件总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            model.addAttribute("totalPriceHaveTax",accountingInfoService.getTotalPriceHaveTaxFromBusMaterialDataByCostId(busBudgetAccountingCost.getId()));
            return "accountManage/cost/infoPage/spareParts/page";
        }
        // 随机备件
        else if (busBudgetAccountingCost.getCode().contains("随机备件")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目随机备件总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            model.addAttribute("totalPriceHaveTax",accountingInfoService.getTotalPriceHaveTaxFromBusMaterialDataByCostId(busBudgetAccountingCost.getId()));
            return "accountManage/cost/infoPage/accompanyingSpareParts/page";
        }
        // 随机备件
        else if (busBudgetAccountingCost.getCode().contains("不可预见")) {
            BusBudgetAccountingEstimatesData condition = new BusBudgetAccountingEstimatesData();
            condition.setBatId(abBudgetAccountingTask.getId());
            condition.setProCode(abBudgetAccountingTask.getProCode());
            condition.setUseType(2);
            condition.setDataMajor(busBudgetAccountingCost.getMajor());
            condition.setDataPart(busBudgetAccountingCost.getPart());
            condition.setCostId(busBudgetAccountingCost.getId());
            condition.setDataType("该项目不可预见总价");
            BusBudgetAccountingEstimatesData data =
                    accountingInfoService.getBusBudgetAccountingEstimatesData(condition);
            if (data != null) {
                if (data.getDataValue() == null) {
                    data.setDataValue("0.00");
                }
                model.addAttribute("totalPrice", data.getDataValue());
            } else {
                model.addAttribute("totalPrice", "0.00");
            }
            if(busBudgetAccountingCost.getUnforeseenArtificial()==null){
                busBudgetAccountingCost.setUnforeseenArtificial(new BigDecimal(0));
            } if(busBudgetAccountingCost.getUnforeseenOther()==null){
                busBudgetAccountingCost.setUnforeseenOther(new BigDecimal(0));
            }
            model.addAttribute("totalPriceHaveTax",accountingInfoService.getTotalPriceHaveTaxFromBusMaterialDataByCostId(busBudgetAccountingCost.getId()).add(busBudgetAccountingCost.getUnforeseenArtificial().add(busBudgetAccountingCost.getUnforeseenOther())));
            return "accountManage/cost/infoPage/unforeseen/page";
        }
        return "404";
    }

    /**
     * 原材料自动计算
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/10 14:04
     */
    @ResponseBody
    @PostMapping("/automaticCalculationRawMaterial")
    public JsonResult automaticCalculationRawMaterial(BusBudgetAccountingCostModel param) {
        return accountingInfoService.automaticCalculationRawMaterial(param);
    }

    /**
     * automaticCalculationPur 外购件自动计算
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/10 14:04
     */
    @ResponseBody
    @PostMapping("/automaticCalculationPur")
    public JsonResult automaticCalculationPur(BusBudgetAccountingCostModel param) {
        return accountingInfoService.automaticCalculationPur(param);
    }

    /**
     * automaticCalculationCut 自动计算
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/10 14:04
     */
    @ResponseBody
    @PostMapping("/automaticCalculationWorkAndMat")
    public JsonResult automaticCalculationWorkAndMat(BusGeneralHoursModel param) {
        return accountingInfoService.automaticCalculationWorkAndMat(param);
    }

    /**
     * automaticCalculationWholeOut 整体外协自动计算
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/10 14:04
     */
    @ResponseBody
    @PostMapping("/automaticCalculationWholeOut")
    public JsonResult automaticCalculationWholeOut(BusBudgetAccountingCost param) {
        return accountingInfoService.automaticCalculationWholeOut(param);
    }

    /**
     * automaticCalculationWithMatOut 带料外协自动计算
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/10 14:04
     */
    @ResponseBody
    @PostMapping("/automaticCalculationWithMatOut")
    public JsonResult automaticCalculationWithMatOut(BusBudgetAccountingCost param) {
        return accountingInfoService.automaticCalculationWithMatOut(param);
    }

    /**
     * calculationFinish 计算完结
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/10 15:09
     */
    @ResponseBody
    @PostMapping("/calculationFinishRawMaterial")
    public JsonResult calculationFinishRawMaterial(BusBudgetAccountingCost param) {
        return accountingInfoService.calculationFinish(param);
    }

    /**
     * cancelCalculationFinishRawMaterial 取消计算完结
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020年11月6日13:59:16
     */
    @ResponseBody
    @PostMapping("/cancelCalculationFinishRawMaterial")
    public JsonResult cancelCalculationFinishRawMaterial(BusBudgetAccountingCost param) {
        return accountingInfoService.cancelCalculationFinishRawMaterial(param);
    }

    /**
     * getTax获取税率
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/8 14:42
     */
    @ResponseBody
    @PostMapping("/getTax")
    public JsonResult getTax(BusBudgetAccountingCost param) {
        return accountingInfoService.getTax(param);
    }

    /**
     * rawMaterialList获取材料列表
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/9 10:40
     */
    @ResponseBody
    @PostMapping("/rawMaterialList")
    public JsonResult rawMaterialList(BusMaterialData param) {
        startPage();
        return jsonResult(accountingInfoService.rawMaterialList(param));
    }

    /**
     * purList 获取外购件列表
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/9 10:40
     */
    @ResponseBody
    @PostMapping("/purList")
    public JsonResult purList(BusMaterialData param) {
        startPage();
        return jsonResult(accountingInfoService.purList(param));
    }

    /**
     * sparePartsList获取备品备件列表
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/11/13 20:46
     */
    @ResponseBody
    @PostMapping("/sparePartsList")
    public JsonResult sparePartsList(BusMaterialData param) {
        startPage();
        return jsonResult(accountingInfoService.purList(param));
    }

    /**
     * wholeOutList获取整体外协列表
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/9 10:40
     */
    @ResponseBody
    @PostMapping("/wholeOutList")
    public JsonResult wholeOutList(BusMaterialDataModel param) {
        startPage();
        return jsonResult(accountingInfoService.wholeOutList(param));
    }

    /**
     * withMatOutList 获取带料外协列表
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/10/9 10:40
     */
    @ResponseBody
    @PostMapping("/withMatOutList")
    public JsonResult withMatOutList(BusMaterialDataModel param) {
        startPage();
        return jsonResult(accountingInfoService.withMatOutList(param));
    }

    /**
     * saveEdit保存修改
     *
     * @param param 信息等
     * @return com.zhongwang.business.common.JsonResult 结果
     * @author 徐一贺
     * @date 2020/10/9 16:35
     */
    @ResponseBody
    @PostMapping("/saveEdit")
    @RequiresPermissions("ver:detail:edit")
    public JsonResult saveEdit(BusMaterialDataModel param) {
        return accountingInfoService.saveEdit(param);
    }

    /**
     * saveGeneralHoursEdit保存修改常规工时辅材运费重量
     *
     * @param param 信息等
     * @return com.zhongwang.business.common.JsonResult 结果
     * @author 徐一贺
     * @date 2020/10/9 16:35
     */
    @ResponseBody
    @PostMapping("/saveGeneralHoursEdit")
    @RequiresPermissions("ver:detail:edit")
    public JsonResult saveGeneralHoursEdit(BusGeneralHoursModel param) {
        return accountingInfoService.saveGeneralHoursEdit(param);
    }

    /**
     * getConfigParam 根据条件获取基础配置参数
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/11/5 14:42
     */
    @ResponseBody
    @PostMapping("/getConfigParam")
    public JsonResult getConfigParam(BusBudgetAccountingBasicInfoConfigModel param) {
        return JsonResult.success().setData(accountingInfoService.getConfigParam(param));
    }

    /**
     * workingHoursOrAuxiliaryList 通过条件获取工时 辅材 总重 运费 数据
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/11/5 15:28
     */
    @ResponseBody
    @PostMapping("/workingHoursOrAuxiliaryList")
    public JsonResult workingHoursOrAuxiliaryList(BusGeneralHoursModel param) {
        BusBudgetAccountingCostModel costInfo =
                accountingInfoService.getBusBudgetAccountingCostModelByPrimaryKey(param.getId());
        BusGeneralHoursModel condition = new BusGeneralHoursModel();
        BeanUtil.copy(param, condition);
        condition.setDataUseType(2);
        BusMachiningHoursModel macCondition = new BusMachiningHoursModel();
        condition.setPart(costInfo.getPart());
        condition.setMajor(costInfo.getMajor());
        macCondition.setDisplayMode(param.getDisplayMode());
        if (costInfo.getCode().contains("-制造费-下料")) {

            if ("机械".equals(costInfo.getMajor())) {
                condition.setTypes("7");
            } else if ("流体".equals(costInfo.getMajor())) {
                condition.setTypes("8");
            } else if ("自动化".equals(costInfo.getMajor())) {
                condition.setTypes("9");
            }
            if ("工时".equals(param.getDataType())) {
                condition.setLaborTypes("4");
            } else if ("辅材".equals(param.getDataType())) {
                condition.setLaborTypes("5");
            }
        } else if (costInfo.getCode().contains("-制造费-铆焊")) {
            if ("机械".equals(costInfo.getMajor())) {
                condition.setTypes("13");
            } else if ("流体".equals(costInfo.getMajor())) {
                condition.setTypes("14");
            } else if ("自动化".equals(costInfo.getMajor())) {
                condition.setTypes("15");
            }
            if ("工时".equals(param.getDataType())) {
                condition.setLaborTypes("6");
            } else if ("辅材".equals(param.getDataType())) {
                condition.setLaborTypes("7");
            }
        } else if (costInfo.getCode().contains("-制造费-机加")) {
            macCondition.setBatId(costInfo.getBatId());
            macCondition.setMajor(costInfo.getMajor());
            macCondition.setPart(costInfo.getPart());
            macCondition.setType(2);
            macCondition.setDataUseType(2);
            //            startPage();
            List<BusMachiningHoursModel> list =
                    accountingInfoService.findBusMachiningHoursModelListByCondition(macCondition);
            return jsonResult(list);
        } else if (costInfo.getCode().contains("-制造费-喷涂")) {
            if ("机械".equals(costInfo.getMajor())) {
                condition.setTypes("25");
            } else if ("流体".equals(costInfo.getMajor())) {
                condition.setTypes("26");
            } else if ("自动化".equals(costInfo.getMajor())) {
                condition.setTypes("27");
            }
            if ("工时".equals(param.getDataType())) {
                condition.setLaborTypes("9,11");
            } else if ("辅材".equals(param.getDataType())) {
                condition.setLaborTypes("10,12");
            }
        } else if (costInfo.getCode().contains("-制造费-装配")) {
            if ("机械".equals(costInfo.getMajor())) {
                condition.setTypes("31");
            } else if ("流体".equals(costInfo.getMajor())) {
                condition.setTypes("32");
            } else if ("自动化".equals(costInfo.getMajor())) {
                condition.setTypes("33");
            }
            if ("工时".equals(param.getDataType())) {
                condition.setLaborTypes("13");
            } else if ("辅材".equals(param.getDataType())) {
                condition.setLaborTypes("14");
            }
        } else if (costInfo.getCode().contains("-制造费-热处理")) {
            if ("机械".equals(costInfo.getMajor())) {
                condition.setTypes("19");
            } else if ("流体".equals(costInfo.getMajor())) {
                condition.setTypes("20");
            } else if ("自动化".equals(costInfo.getMajor())) {
                condition.setTypes("21");
            }
            if ("重量".equals(param.getDataType())) {
                condition.setLaborTypes("8");
            }
        } else if (costInfo.getCode().contains("-现场安装费-人工-安装人工")) {
            if ("机械".equals(costInfo.getMajor())) {
                condition.setTypes("38");
            } else if ("流体".equals(costInfo.getMajor())) {
                condition.setTypes("39");
            } else if ("自动化".equals(costInfo.getMajor())) {
                condition.setTypes("40");
            }
            if ("工时".equals(param.getDataType())) {
                condition.setLaborTypes("18");
            }
        } else if (costInfo.getCode().contains("-现场安装费-人工-调试人工")) {
            if ("机械".equals(costInfo.getMajor())) {
                condition.setTypes("1");
            } else if ("流体".equals(costInfo.getMajor())) {
                condition.setTypes("2");
            } else if ("自动化".equals(costInfo.getMajor())) {
                condition.setTypes("3");
            }
            if ("工时".equals(param.getDataType())) {
                condition.setLaborTypes("20");
            }
        } else if (costInfo.getCode().contains("-现场安装费-辅材")) {
            if ("机械".equals(costInfo.getMajor())) {
                condition.setTypes("38");
            } else if ("流体".equals(costInfo.getMajor())) {
                condition.setTypes("39");
            } else if ("自动化".equals(costInfo.getMajor())) {
                condition.setTypes("40");
            }
            if ("辅材".equals(param.getDataType())) {
                condition.setLaborTypes("19");
            }
        } else if (costInfo.getCode().contains("-设计费")) {
            if ("机械".equals(costInfo.getMajor())) {
                condition.setTypes("1");
            } else if ("流体".equals(costInfo.getMajor())) {
                condition.setTypes("2");
            } else if ("自动化".equals(costInfo.getMajor())) {
                condition.setTypes("3");
            }
            if ("工时".equals(param.getDataType())) {
                condition.setLaborTypes("1");
            }
            if ("重量".equals(param.getDataType())) {
                condition.setLaborTypes("2,3");
            }
        } else if (costInfo.getCode().contains("包装运输费-包装费")) {
            condition.setPart(null);
            condition.setMajor(null);
            condition.setTypes("34");
            if ("工时".equals(param.getDataType())) {
                condition.setLaborTypes("15");
            } else if ("辅材".equals(param.getDataType())) {
                condition.setLaborTypes("16");
            }
        } else if (costInfo.getCode().contains("包装运输费-运输费")) {
            condition.setPart(null);
            condition.setMajor(null);
            condition.setTypes("34");
            if ("运输费".equals(param.getDataType())) {
                condition.setLaborTypes("17");
            }
        }
        startPage();
        List<BusGeneralHoursModel> listHours =
                accountingInfoService.findBusGeneralHoursModelListByCondition(condition);
        return jsonResult(listHours);
    }

    /**
     * gotoMachiningDetail 跳转到明细页
     *
     * @param ids     主键们
     * @param proCode 项目号
     * @param model   渲染模型
     * @return java.lang.String
     * @author 徐一贺
     * @date 2020/11/9 8:40
     */
    @GetMapping("/gotoMachiningDetail/{ids}/{proCode}")
    public String gotoMachiningDetail(
            @PathVariable("ids") String ids, @PathVariable("proCode") String proCode, Model model) {
        model.addAttribute("ids", ids);
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        return "accountManage/cost/infoPage/machining/detail";
    }

    /**
     * getMachiningQuotaData 获取机加定额版本列表
     *
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/11/9 9:46
     */
    @ResponseBody
    @PostMapping("/getMachiningQuotaData")
    public JsonResult getMachiningQuotaData() {
        return jsonResult(accountingInfoService.getMachiningQuotaData());
    }

    /**
     * AccountingInfoController根据条件获取机加明细数据
     *
     * @param param 参数
     * @author 徐一贺
     * @date 2020/11/9 11:11
     */
    @ResponseBody
    @PostMapping("/macDetailList")
    public JsonResult macDetailList(BusMachiningHoursModel param) {
        startPage();
        return jsonResult(accountingInfoService.findMacDetailList(param));
    }

    /**
     * changeQuotaVersion 更换定额版本
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/11/9 12:44
     */
    @ResponseBody
    @PostMapping("/changeQuotaVersion")
    public JsonResult changeQuotaVersion(BusMachiningHoursModel param) {
        return accountingInfoService.changeQuotaVersion(param);
    }

    /**
     * rawMatImport 导入原材料数据
     *
     * @param file  文件
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/11/21 14:44
     */
    @ResponseBody
    @PostMapping("/rawMatImport")
    public JsonResult rawMatImport(@RequestParam("file") MultipartFile file, RawMatModel param) {
        BusBudgetAccountingCost cost =
                accountingInfoService.getBusBudgetAccountingCostByPrimaryKey(param.getId());
        if (!cost.getCode().contains("-铝材")) {
            return success(accountingInfoService.rawMatImport(file, param));
        } else {
            return success(accountingInfoService.AluImport(file, param));
        }
    }

    /**
     * purImport 导入外购费
     *
     * @param file
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/31 15:29
     */
    @ResponseBody
    @PostMapping("/purImport")
    public JsonResult purImport(@RequestParam("file") MultipartFile file, PurModel param) {
        return success(accountingInfoService.purImport(file, param));
    }

    /**
     * wholeImport 导入整体外协
     *
     * @param file
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/4 14:27
     */
    @ResponseBody
    @PostMapping("/wholeImport")
    public JsonResult wholeImport(@RequestParam("file") MultipartFile file, WholeExportModel param) {
        return success(accountingInfoService.wholeImport(file, param));
    }

    /**
     * withMatImport 导入带料外协
     *
     * @param file
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/4 14:38
     */
    @ResponseBody
    @PostMapping("/withMatImport")
    public JsonResult withMatImport(
            @RequestParam("file") MultipartFile file, WithMatExportModel param) {
        return success(accountingInfoService.withMatImport(file, param));
    }

    /**
     * cutImport 导入下料数据
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/26 10:32
     */
    @ResponseBody
    @PostMapping("/cutImport")
    public JsonResult cutImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 6) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("下料工时类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("数量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.cutHoursImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        } else if (row.getPhysicalNumberOfCells() == 7) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("主要类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("主要辅材用量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("单价")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 7 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.cutAuxImport(file, param);
                            } else {
                                return error("导入的辅材Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * @methodName: transportImport
     * @description: 概算运输导入
     * @param: files
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 13:12
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/transportImport")
    public JsonResult transportImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        while (it.hasNext()) {
                            cell = it.next();
                            o++;
                            if (cell == null) {
                                continue;
                            } else {
                                if (o == 1 && !String.valueOf(cell).equals("发货地")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 2 && !String.valueOf(cell).equals("目的地")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 3 && !String.valueOf(cell).equals("重量（t）")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 4 && !String.valueOf(cell).equals("车数（车）")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 5 && !String.valueOf(cell).equals("距离（km）")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 6 && !String.valueOf(cell).equals("运费（元）")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 7 && !String.valueOf(cell).equals("备注")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 8 && !String.valueOf(cell).equals("警告信息")) {
                                    rightFlag = false;
                                    continue;
                                }
                            }
                        }
                        if (rightFlag) {
                            msg += accountingInfoService.transportImport(file, param);
                        } else {
                            return error("导入的工时Excel不正确！");
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * installImport 导入安装工时数据
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/26 10:32
     */
    @ResponseBody
    @PostMapping("/installImport")
    public JsonResult installImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 6) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("安装工时类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("数量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.installHoursImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * debugImport 导入调试工时数据
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/26 10:32
     */
    @ResponseBody
    @PostMapping("/debugImport")
    public JsonResult debugImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 6) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("调试工时类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("数量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.debugHoursImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * packingHoursImport 导入打包工时数据
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/5 18:23
     */
    @ResponseBody
    @PostMapping("/packingHoursImport")
    public JsonResult packingHoursImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 6) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("包装工时类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("数量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.packingHoursImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * packingAuxImport 导入包装辅材
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/5 18:42
     */
    @ResponseBody
    @PostMapping("/packingAuxImport")
    public JsonResult packingAuxImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 6) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("主要辅材类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("主要辅材用量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("单价")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.packingAuxImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * designHoursImport 导入设计工时数据
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/5 10:44
     */
    @ResponseBody
    @PostMapping("/designHoursImport")
    public JsonResult designHoursImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 6) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("设计工时类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("数量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.designHoursImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * designWeightImport 导入设计重量数据
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/5 10:44
     */
    @ResponseBody
    @PostMapping("/designWeightImport")
    public JsonResult designWeightImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 5) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("设计重量类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("设计重量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.designWeightImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * auxImport 导入安装辅材数据
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/26 10:32
     */
    @ResponseBody
    @PostMapping("/auxImport")
    public JsonResult auxImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 6) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("主要辅材类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("主要辅材数量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("单价")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.auxImport(file, param);
                            } else {
                                return error("导入的辅材Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    @ResponseBody
    @PostMapping("/heatTreatmentImport")
    public JsonResult heatTreatmentImport(
            @RequestParam("file") MultipartFile file, BusGeneralHoursModel param) {
        String msg = "";
        try {
            Workbook workbook = null;
            // sheet页name
            Sheet sheet = null;
            Row row = null;
            Cell cell = null; // 验证文件格式
            InputStream is = file.getInputStream();
            String fileName = file.getOriginalFilename();
            if (fileName.length() > 0) {
                String suffix = fileName.substring(fileName.lastIndexOf("."));
                if (suffix.equals(excel2003L)) {
                    workbook = new HSSFWorkbook(is);
                } else if (suffix.equals(excel2007U)) {
                    workbook = new XSSFWorkbook(is);
                }
                // 只取第一个sheet页
                for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                    // 获取第一个sheet
                    sheet = workbook.getSheetAt(j);
                    if (sheet == null) {
                        continue;
                    }
                    boolean rightFlag = true;
                    // 获取第一行
                    row = sheet.getRow(0);
                    // 遍历第一行
                    int o = 0;
                    Iterator<Cell> it = row.iterator();
                    if (row.getPhysicalNumberOfCells() == 7) {
                        while (it.hasNext()) {
                            cell = it.next();
                            o++;
                            if (cell == null) {
                                continue;
                            } else {
                                if (o == 1 && !String.valueOf(cell).equals("热处理形式")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 2 && !String.valueOf(cell).equals("数量")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 4 && !String.valueOf(cell).equals("单价")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 5 && !String.valueOf(cell).equals("成本金额")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 6 && !String.valueOf(cell).equals("备注")) {
                                    rightFlag = false;
                                    continue;
                                } else if (o == 7 && !String.valueOf(cell).equals("警告信息")) {
                                    rightFlag = false;
                                    continue;
                                }
                            }
                        }
                        if (rightFlag) {
                            msg += accountingInfoService.heatTreatmentImport(file, param);
                        } else {
                            return error("导入的工时Excel不正确！");
                        }
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * assemblyImport 导入装配数据
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/30 18:35
     */
    @ResponseBody
    @PostMapping("/assemblyImport")
    public JsonResult assemblyImport(
            @RequestParam("file") MultipartFile[] files, AssemblyExportModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 6) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("装配工时类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("数量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.assemblyHoursImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        } else if (row.getPhysicalNumberOfCells() == 7) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("主要类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("主要辅材用量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("单价")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 7 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.assemblyAuxImport(file, param);
                            } else {
                                return error("导入的辅材Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * sprayImport 喷涂导入
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/30 14:28
     */
    @ResponseBody
    @PostMapping("/sprayImport")
    public JsonResult sprayImport(
            @RequestParam("file") MultipartFile[] files, SprayExportModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 7) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("喷涂工时类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("喷涂类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("数量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 7 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.sprayHoursImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        } else if (row.getPhysicalNumberOfCells() == 8) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("主要类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("喷涂类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("主要辅材用量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("单价")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 7 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 8 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.sprayAuxImport(file, param);
                            } else {
                                return error("导入的辅材Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * rivetAndSolderImport 导入铆焊数据
     *
     * @param files
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/28 9:00
     */
    @ResponseBody
    @PostMapping("/rivetAndSolderImport")
    public JsonResult rivetAndSolderImport(
            @RequestParam("file") MultipartFile[] files, BusGeneralHoursModel param) {
        String msg = "";
        try {
            for (int i = 0; i < files.length; i++) {
                Workbook workbook = null;
                // sheet页name
                Sheet sheet = null;
                Row row = null;
                Cell cell = null; // 验证文件格式
                MultipartFile file = files[i];
                InputStream is = file.getInputStream();
                String fileName = file.getOriginalFilename();
                if (fileName.length() > 0) {
                    String suffix = fileName.substring(fileName.lastIndexOf("."));
                    if (suffix.equals(excel2003L)) {
                        workbook = new HSSFWorkbook(is);
                    } else if (suffix.equals(excel2007U)) {
                        workbook = new XSSFWorkbook(is);
                    }
                    // 只取第一个sheet页
                    for (int j = 0; j < 1; j++) { // workbook.getNumberOfSheets()
                        // 获取第一个sheet
                        sheet = workbook.getSheetAt(j);
                        if (sheet == null) {
                            continue;
                        }
                        boolean rightFlag = true;
                        // 获取第一行
                        row = sheet.getRow(0);
                        // 遍历第一行
                        int o = 0;
                        Iterator<Cell> it = row.iterator();
                        if (row.getPhysicalNumberOfCells() == 6) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("铆焊工时类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("数量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.rivetAndSolderHoursImport(file, param);
                            } else {
                                return error("导入的工时Excel不正确！");
                            }
                        } else if (row.getPhysicalNumberOfCells() == 7) {
                            while (it.hasNext()) {
                                cell = it.next();
                                o++;
                                if (cell == null) {
                                    continue;
                                } else {
                                    if (o == 1 && !String.valueOf(cell).equals("主要类别")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 2 && !String.valueOf(cell).equals("主要辅材用量")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 3 && !String.valueOf(cell).equals("单位")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 4 && !String.valueOf(cell).equals("单价")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 5 && !String.valueOf(cell).equals("成本金额")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 6 && !String.valueOf(cell).equals("备注")) {
                                        rightFlag = false;
                                        continue;
                                    } else if (o == 7 && !String.valueOf(cell).equals("警告信息")) {
                                        rightFlag = false;
                                        continue;
                                    }
                                }
                            }
                            if (rightFlag) {
                                msg += accountingInfoService.rivetAndSolderAuxImport(file, param);
                            } else {
                                return error("导入的辅材Excel不正确！");
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return error("导入失败，请按照模板上传正确的excel文件。");
        }
        return success(msg);
    }

    /**
     * aluminiumImport 铝材导入
     *
     * @param file  文件
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/12/4 20:19
     */
    @ResponseBody
    @PostMapping("/aluminiumImport")
    public JsonResult aluminiumImport(
            @RequestParam("file") MultipartFile file, AluminiumModel param) {
        return success(accountingInfoService.aluminiumImport(file, param));
    }

    /**
     * macImport 导入机加数据
     *
     * @param file
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/30 8:48
     */
    @ResponseBody
    @PostMapping("/macImport")
    public JsonResult macImport(@RequestParam("file") MultipartFile file, MacHoursExportModel param) {
        return success(accountingInfoService.macImport(file, param));
    }

    //    /**
    //     * purImport 导入外购件数据
    //     *
    //     * @param file  文件
    //     * @param param 参数
    //     * @return com.zhongwang.business.common.JsonResult
    //     * @throws
    //     * @author 徐一贺
    //     * @date 2020/11/21 14:44
    //     */
    //    @ResponseBody
    //    @PostMapping("/purImport")
    //    public JsonResult purImport(@RequestParam("file") MultipartFile file, PurModel param) {
    //        return success(accountingInfoService.purImport(file, param));
    //    }

    /**
     * outImport 导入外协件数据
     *
     * @param file  文件
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/11/21 14:44
     */
    @ResponseBody
    @PostMapping("/outImport")
    public JsonResult outImport(@RequestParam("file") MultipartFile file, OutModel param) {
        return success(accountingInfoService.outImport(file, param));
    }

    /**
     * @methodName: weightImport
     * @description: 导入设计重量数据
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/27 15:48
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/weightImport")
    public JsonResult weightImport(
            @RequestParam("file") MultipartFile file, BusBudgetAccountingCost param) {
        return success(accountingInfoService.weightImport(file, param));
    }

    /**
     * @methodName: accPurImport
     * @description: 导入外购件
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 16:49
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/accPurImport")
    public JsonResult accPurImport(@RequestParam("file") MultipartFile file, BusMaterialData param) {
        return success(accountingInfoService.accPurImport(file, param));
    }

    /**
     * @methodName: accRawMatImport
     * @description: 导入原材料
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 19:50
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/accRawMatImport")
    public JsonResult accRawMatImport(@RequestParam("file") MultipartFile file, BusMaterialData param) {
        return success(accountingInfoService.accRawMatImport(file, param));
    }

    /**
     * @methodName: accOutImport
     * @description: 导入外协件
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 20:42
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/accOutImport")
    public JsonResult accOutImport(@RequestParam("file") MultipartFile file, BusMaterialData param) {
        return success(accountingInfoService.accOutImport(file, param));
    }
    /**
     * @methodName: accAluminumImport
     * @description: 铝材导入
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 16:00
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/accAluminumImport")
    public JsonResult accAluminumImport(@RequestParam("file") MultipartFile file, BusMaterialData param) {
        return success(accountingInfoService.accAluminumImport(file, param));
    }

    /**
     * @methodName: accOtherHoursImport
     * @description: 导入核算其他工时
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 8:47
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/accOtherHoursImport")
    public JsonResult accOtherHoursImport(@RequestParam("file") MultipartFile file, BusMaterialData param) {
        return success(accountingInfoService.accOtherHoursImport(file, param));
    }

    /**
     * @methodName: accOtherAuxImport
     * @description: 导入核算其他辅材
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 11:44
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/accOtherAuxImport")
    public JsonResult accOtherAuxImport(@RequestParam("file") MultipartFile file, BusMaterialData param) {
        return success(accountingInfoService.accOtherAuxImport(file, param));
    }

    /**
     * @methodName: accHeatTreatImport
     * @description: 导入核算热处理
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 11:44
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/accHeatTreatImport")
    public JsonResult accHeatTreatImport(@RequestParam("file") MultipartFile file, BusMaterialData param) {
        return success(accountingInfoService.accHeatTreatImport(file, param));
    }

    /**
     * @methodName: accMachiningHoursImport
     * @description: 机加工时导入
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 15:04
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/accMachiningHoursImport")
    public JsonResult accMachiningHoursImport(@RequestParam("file") MultipartFile file, BusMachiningHours param) {
        return success(accountingInfoService.accMachiningHoursImport(file, param));
    }

    /**
     * @methodName: accTransportationImport
     * @description: 导入核算运输费
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 13:44
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/accTransportationImport")
    public JsonResult accTransportationImport(@RequestParam("file") MultipartFile file, BusMaterialData param) {
        return success(accountingInfoService.accTransportationImport(file, param));
    }
//  /**
//   * @methodName: accAluminumImport
//   * @description: 导入铝材
//   * @param: file
//   * @param: param
//   * @return： com.zhongwang.business.common.JsonResult
//   * @exception：
//   * @author： 徐一贺 tel:18941916590
//   * @designer： 陈欣，孔祥鑫
//   * @leader： 陈欣 tel:18104194240
//   * @date： 2021/3/29 20:22
//   * @office: 智能控制设计科
//   * @research institute： 智能控制设计所
//   * @department： 机械设计院
//   * @company: 辽宁忠旺机械设备制造有限公司
//   * @group： 忠旺集团
//   * @version: 1.0
//   */
//  @ResponseBody
//  @PostMapping("/accAluminumImport")
//  public JsonResult accAluminumImport(@RequestParam("file") MultipartFile file, BusMaterialData param) {
//    return success(accountingInfoService.accAluminumImport(file, param));
//  }

    /**
     * @methodName: laborTimeImport
     * @description: 导入人工工时数据
     * @param: file
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/27 15:48
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/laborTimeImport")
    public JsonResult laborTimeImport(
            @RequestParam("file") MultipartFile file, BusBudgetAccountingCost param) {
        return success(accountingInfoService.laborTimeImport(file, param));
    }

    /**
     * outImport 导入外协件数据
     *
     * @param file  文件
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/11/21 14:44
     */
    @ResponseBody
    @PostMapping("/whiOutImport")
    public JsonResult whiOutImport(@RequestParam("file") MultipartFile file, OutModel param) {
        return success(accountingInfoService.whiOutImport(file, param));
    }

    /**
     * purImport 导入备品备件数据
     *
     * @param file  文件
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/11/21 14:44
     */
    @ResponseBody
    @PostMapping("/sparePartsImport")
    public JsonResult sparePartsImport(
            @RequestParam("file") MultipartFile file, SparePartsModel param) {
        return success(accountingInfoService.sparePartsImport(file, param));
    }

    /**
     * purImport 导入随机备件数据
     *
     * @param file  文件
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/11/21 14:44
     */
    @ResponseBody
    @PostMapping("/accompanyingSparePartsImport")
    public JsonResult accompanyingSparePartsImport(
            @RequestParam("file") MultipartFile file, SparePartsModel param) {
        return success(accountingInfoService.accompanyingSparePartsImport(file, param));
    }

    /**
     * 错误文件导出
     *
     * @param url 文件路径
     * @return JsonResult
     */
    @ResponseBody
    @PostMapping("/exist")
    public JsonResult checkFileExist(String url) {
        return jsonResult(accountingInfoService.exist(url));
    }

    /**
     * @methodName: getPartList
     * @description: 根据成本项总单和专业获取部分列表
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/27 10:32
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/getPartList")
    public JsonResult getPartList(BusBudgetAccountingCost param) {
        return success().setData(accountingInfoService.getPartList(param));
    }

    /**
     * switchAmountModel 切换金额显示模式
     *
     * @param param 参数
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/3 12:52
     */
    @ResponseBody
    @PostMapping("/switchAmountModel")
    public JsonResult switchAmountModel(BusBudgetAccountingCostModel param) {
        return accountingInfoService.switchAmountModel(param);
    }

    /**
     * loadControlDropDownMenuDisplayParameters 根据单据表ID获取成本项金额显示模式
     *
     * @param batId 单据表ID
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/12/7 16:28
     */
    @ResponseBody
    @PostMapping("/loadControlDropDownMenuDisplayParameters")
    public JsonResult loadControlDropDownMenuDisplayParameters(Integer batId) {
        return success().setData(accountingInfoService.loadControlDropDownMenuDisplayParameters(batId));
    }

    /**
     * loadWeightParams 根据单据表主键加载重量参数
     *
     * @param batId 单据表主键
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/12/7 16:33
     */
    @ResponseBody
    @PostMapping("/loadWeightParams")
    public JsonResult loadWeightParams(Integer batId) {
        return success().setData(accountingInfoService.loadWeightParams(batId));
    }

    /**
     * loadConfigParams 根据单据表主键获取配置参数
     *
     * @param batId 单据表主键
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/12/7 16:44
     */
    @ResponseBody
    @PostMapping("/loadConfigParams")
    public JsonResult loadConfigParams(Integer batId) {
        return success().setData(accountingInfoService.loadConfigParams(batId));
    }

    /**
     * loadMainParam 根据单据表主键加载主要参数
     *
     * @param batId 单据表ID
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/10 10:18
     */
    @ResponseBody
    @PostMapping("/loadMainParam")
    public JsonResult loadMainParam(Integer batId) {
        return success().setData(accountingInfoService.loadMainParam(batId));
    }

    /**
     * loadNote 加载note
     *
     * @param batId
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/12/10 10:41
     */
    @ResponseBody
    @PostMapping("/loadNote")
    public JsonResult loadNote(Integer batId) {
        return success().setData(accountingInfoService.loadNote(batId));
    }

    /**
     * loadCostSheet 根据单据表主键加载核算成本清单
     *
     * @param batId 单据表主键
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/12/7 17:08
     */
    @ResponseBody
    @PostMapping("/loadCostSheet")
    public JsonResult loadCostSheet(Integer batId) {
        return success().setData(accountingInfoService.loadCostSheet(batId));
    }

    /**
     * toChange 根据单据表主键更改单据表对应的值
     *
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @throws
     * @author 徐一贺
     * @date 2020/12/10 13:30
     */
    @ResponseBody
    @PostMapping("/toChange")
    public JsonResult toChange(BusBudgetAccountingTaskModel param) {
        return accountingInfoService.toChange(param);
    }

    /**
     * saveHeatTreatmentEdit 保存热处理编辑
     *
     * @param param 热处理数据
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2020/12/30 20:08
     */
    @ResponseBody
    @PostMapping("/saveHeatTreatmentEdit")
    public JsonResult saveHeatTreatmentEdit(BusGeneralHoursModel param) {
        return accountingInfoService.saveHeatTreatmentEdit(param);
    }

    /**
     * addCostItem 添加成本项
     *
     * @param param
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/6 12:46
     */
    @ResponseBody
    @PostMapping("/addCostItem")
    public JsonResult addCostItem(BusBudgetAccountingCost param) {
        return accountingInfoService.addCostItem(param);
    }

    /**
     * deleteCostItem 删除成本项
     *
     * @param id
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/7 9:34
     */
    @ResponseBody
    @PostMapping("/deleteCostItem")
    public JsonResult deleteCostItem(Integer id) {
        return accountingInfoService.deleteCostItem(id);
    }

    /**
     * recovery 恢复成本项
     *
     * @param id
     * @return com.zhongwang.business.common.JsonResult
     * @author 徐一贺
     * @date 2021/1/7 14:15
     */
    @ResponseBody
    @PostMapping("/recovery")
    public JsonResult recovery(Integer id) {
        return accountingInfoService.recovery(id);
    }

    /**
     * @methodName: gotoAccountingImportWeightPage
     * @description: 跳转到核算导入设备重量页面
     * @param: proCode
     * @param: batId
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 14:05
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportWeightPage/{proCode}/{batId}")
    public String gotoAccountingImportWeightPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/equipmentWeightImportSeePage";
    }

    /**
     * @methodName: gotoAccountingImportOtherHoursPage
     * @description: 导入其他人工工时
     * @param: proCode
     * @param: batId
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 15:46
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportOtherHoursPage/{proCode}/{batId}")
    public String gotoAccountingImportOtherHoursPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/otherHoursImportSeePage";
    }

    /**
     * @methodName: gotoAccountingImportPurPage
     * @description: 跳转到导入外购件页
     * @param: proCode
     * @param: batId
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 15:53
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportPurPage/{proCode}/{batId}")
    public String gotoAccountingImportPurPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/purImportSeePage";
    }

    /**
     * @methodName: gotoAccountingImportRawMatPage
     * @description: 跳转到导入原材料页
     * @param: proCode
     * @param: batId
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 19:44
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportRawMatPage/{proCode}/{batId}")
    public String gotoAccountingImportRawMatPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/rawMatImportSeePage";
    }

    /**
     * @methodName: gotoAccountingImportTransportationPage
     * @description: 跳转到导入运输费页
     * @param: proCode
     * @param: batId
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 13:35
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportTransportationPage/{proCode}/{batId}")
    public String gotoAccountingImportTransportationPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/transportationImportSeePage";
    }

    /**
     * @methodName: gotoAccountingImportOtherAuxPage
     * @description: 跳转到辅材导入页
     * @param: proCode
     * @param: batId
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 10:46
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportOtherAuxPage/{proCode}/{batId}")
    public String gotoAccountingImportOtherAuxPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/otherAuxImportSeePage";
    }

    /**
     * @methodName: gotoAccountingImportHeatTreatmentPage
     * @description: 跳转到热处理导入页
     * @param: proCode
     * @param: batId
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 12:45
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportHeatTreatmentPage/{proCode}/{batId}")
    public String gotoAccountingImportHeatTreatmentPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/heatTreatImportSeePage";
    }

    /**
     * @methodName: gotoAccountingImportMachiningHoursPage
     * @description: 跳转到导入机加工时
     * @param: proCode
     * @param: batId
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 14:15
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportMachiningHoursPage/{proCode}/{batId}")
    public String gotoAccountingImportMachiningHoursPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/machimimgHoursImportSeePage";
    }

    /**
     * @methodName: gotoAccountingImportOutPage
     * @description: 跳转到外协件
     * @param: proCode
     * @param: batId
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 20:33
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportOutPage/{proCode}/{batId}")
    public String gotoAccountingImportOutPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/outImportSeePage";
    }

    /**
     * @methodName: gotoAccountingImportAluminumPage
     * @description: 跳转到导入铝型材
     * @param: proCode
     * @param: batId
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 20:11
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/gotoAccountingImportAluminumPage/{proCode}/{batId}")
    public String gotoAccountingImportAluminumPage(
            @PathVariable("proCode") String proCode, @PathVariable("batId") Integer batId, Model model) {
        VwProject project = accountingInfoService.getVwProjectByCode(proCode);
        model.addAttribute("project", project);
        model.addAttribute("batId", batId);
        return "accountManage/cost/infoPage/import/aluminumImportSeePage";
    }

    /**
     * @methodName: loadDesignWeightList
     * @description: 加载导入后的设备重量列表
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 14:20
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/loadDesignWeightList")
    public JsonResult loadDesignWeightList(DesignWeightModel param) {
        startPage();
        return jsonResult(accountingInfoService.loadDesignWeightList(param));
    }

    /**
     * @methodName: loadBusGeneralHoursList
     * @description: 获取其他工时列表
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 8:43
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/loadBusGeneralHoursList")
    public JsonResult loadBusGeneralHoursList(BusGeneralHours param) {
        startPage();
        return jsonResult(accountingInfoService.loadBusGeneralHoursList(param));
    }

    /**
     * @methodName: loadBusMachiningHoursList
     * @description: 核算导入机加工时加载列表
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 14:40
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/loadBusMachiningHoursList")
    public JsonResult loadBusMachiningHoursList(BusMachiningHours param) {
        startPage();
        return jsonResult(accountingInfoService.loadBusMachiningHoursList(param));
    }

    /**
     * @methodName: removeEquipmentWeightData
     * @description: 删除重量数据
     * @param: id
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 15:15
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/removeEquipmentWeightData")
    public JsonResult removeEquipmentWeightData(Integer id) {
        return accountingInfoService.removeEquipmentWeightData(id);
    }

    /**
     * @methodName: removeBusMachiningHoursByIds
     * @description: 根据主键删除机加工时
     * @param: id
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 15:25
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/removeBusMachiningHoursByIds")
    public JsonResult removeBusMachiningHoursByIds(String ids) {
        String[] idArr = ids.split(",");
        int removeCount = 0;
        for (int i = 0; i < idArr.length; i++) {
            if (accountingInfoService.removeBusMachiningHoursByIds(Integer.valueOf(idArr[i])).getType()
                    == JsonResult.ResultType.SUCCESS) {
                removeCount++;
            }
        }
        if (removeCount == idArr.length) {
            return success("删除成功！");
        } else {
            return error("删除失败！");
        }
    }


    /**
     * @methodName: removeDatas
     * @description: 批量删除重量数据
     * @param: idStr
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 15:35
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/removeDatas")
    public JsonResult removeDatas(String idStr) {
        String[] idArr = idStr.split(",");
        int removeCount = 0;
        for (int i = 0; i < idArr.length; i++) {
            if (accountingInfoService.removeEquipmentWeightData(Integer.valueOf(idArr[i])).getType()
                    == JsonResult.ResultType.SUCCESS) {
                removeCount++;
            }
        }
        if (removeCount == idArr.length) {
            return success("删除成功！");
        } else {
            return error("删除失败！");
        }
    }

    /**
     * @methodName: removeMatDatas
     * @description: 根据主键们删除材料表数据
     * @param: ids
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 18:19
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/removeMatDatas")
    public JsonResult removeMatDatas(String ids) {
        String[] idArr = ids.split(",");
        int removeCount = 0;
        for (int i = 0; i < idArr.length; i++) {
            if (accountingInfoService
                    .removeBusMaterialDataByPrimaryKey(Integer.valueOf(idArr[i]))
                    .getType()
                    == JsonResult.ResultType.SUCCESS) {
                removeCount++;
            }
        }
        return success("删除成功！");
    }

    /**
     * @methodName: removeBusGeneralHoursByIds
     * @description: 根据主键们删除公式、辅材、重量、运输、热处理表数据
     * @param: ids
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 9:48
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/removeBusGeneralHoursByIds")
    public JsonResult removeBusGeneralHoursByIds(String ids) {
        String[] idArr = ids.split(",");
        int removeCount = 0;
        for (int i = 0; i < idArr.length; i++) {
            if (accountingInfoService.removeBusGeneralHoursByPrimaryKey(Integer.valueOf(idArr[i])).getType() == JsonResult.ResultType.SUCCESS) {
                removeCount++;
            }
        }
        return success("删除成功！");
    }

    /**
     * @methodName: loadPurList
     * @description: 根据参数查询外购件列表
     * @param: param
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/29 16:16
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/loadBusMaterialDataList")
    public JsonResult loadBusMaterialDataList(BusMaterialData param) {
        startPage();
        return jsonResult(accountingInfoService.findBusMaterialDataByParam(param));
    }

    /**
     * @methodName: saveUnforeseenPrice
     * @description: 保存不可预见费用
     * @param: cost
     * @return： com.zhongwang.business.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，孔祥鑫
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/3/30 19:25
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/saveUnforeseenPrice")
    public JsonResult saveUnforeseenPrice(BusBudgetAccountingCost cost){
        return accountingInfoService.saveUnforeseenPrice(cost);
    }
}
